home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NOVA - For the NeXT Workstation
/
NOVA - For the NeXT Workstation.iso
/
SourceCode
/
OOP_Course
/
Examples
/
DrawTests
/
Display
/
DisplayView.m
< prev
next >
Wrap
Text File
|
1992-12-19
|
2KB
|
70 lines
/* Generated by Interface Builder */
#import "DisplayView.h"
@implementation DisplayView
- initFrame:(const NXRect *)theFrame
{
[super initFrame:theFrame];
sqSide=100.; //and length of a side
NXSetRect(&sqRect, bounds.size.width/2.0, bounds.size.height/2.0,3*sqSide,sqSide);
backgroundGray=NX_WHITE;
return self;
}
- (float)backgroundGray
{
return backgroundGray;
}
- takeBackgroundGrayFrom:sender
{
backgroundGray = [sender floatValue];
[self display];
return self;
}
- drawSelf:(const NXRect *)r :(int)c
{
// method is invoked everytime mouse is clicked in a different location
int i, length = sqSide/8;
/* Draw background */
PSsetgray(backgroundGray);
NXRectFill(&bounds);
/* Start drawing */
PSsetgray(NX_BLACK);
PSsetlinewidth(5.0);
PSmoveto(sqRect.origin.x, sqRect.origin.y); // display the drawing
for(i = 0; i<12; i++){
PSrlineto(length, 0.0);
PSrlineto(0.0, 8*length);
PSrlineto(length, 0.0);
PSrlineto(0.0, -8*length);
}
PSstroke();
return self;
}
- mouseDownAction:(NXPoint *)currentLocation
{
[self mouseDraggedAction:currentLocation]; //now do same as when dragging
return self;
}
- mouseDraggedAction:(NXPoint *)currentLocation
{
xOffset = sqRect.size.width/2; // set the offsets for movement wrt the center
yOffset = sqRect.size.height/2;
sqRect.origin.x = currentLocation->x - xOffset; // new x and y locations are center
sqRect.origin.y = currentLocation->y - yOffset; // of drawing
[self display];
return self;
}
@end